Linux 修改用户密码

命令:passwd

语法:

1
passwd [username]

        创建完账户后,默认是没有设置密码的,虽然没有密码,但该账户同样登录不了系统。只有设置好密码后才能登录系统。为用户创建密码时,为了安全起见,尽量设置复杂一些。
        可以按照这样的规则来设置密码:

  1. 长度大于10个字符;
  2. 密码中包含大小写字母数字以及特殊字符 ‘*’ ,‘&’ ,‘%’ 等;
  3. 不规则性(不要出现 root 、happy 、love 、linux 、7758520 、111111 等等单词或者数字);
  4. 不要带有自己的名字、公司名字、自己电话、自己生日等。
1
2
3
4
5
[root@localhost ~]# passwd
更改用户 root 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

        “passwd” 后面不加 username 则是修改当先账户的密码。如果登录的是 root 账户,后面可以跟普通用户的名字,意思是修改指定账户的密码。

1
2
3
4
5
[root@localhost ~]# passwd user11
更改用户 user11 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

        只有 root 用户才可以修改其他账户的密码,普通账户只能修改自己的密码,其他账户的密码是不可以修改的。

passwd 几个比较重要的参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost beinan]# passwd --help
Usage: passwd [OPTION...] <accountName>
-k, --keep-tokens keep non-expired authentication tokens 注:保留即将过期的用户在期满后能仍能使用;
-d, --delete delete the password for the named account (root only) 注:删除用户密码,仅能以root权限操作;
-l, --lock lock the named account (root only) 注:锁住用户无权更改其密码,仅能通过root权限操作;
-u, --unlock unlock the named account (root only) 注:解除锁定;
-f, --force force operation 注:强制操作;仅root权限才能操作;
-x, --maximum=DAYS maximum password lifetime (root only) 注:两次密码修正的最大天数,后面接数字;仅能root权限操作;
-n, --minimum=DAYS minimum password lifetime (root only) 注:两次密码修改的最小天数,后面接数字,仅能root权限操作;
-w, --warning=DAYS number of days warning users receives before 注:在距多少天提醒用户修改密码;仅能root权限操作;
password expiration (root only)
-i, --inactive=DAYS number of days after password expiration when an 注:在密码过期后多少天,用户被禁掉,仅能以root操作;
account becomes disabled (root only)
-S, --status report password status on the named account (root 注:查询用户的密码状态,仅能root用户操作;
only)
--stdin read new tokens from stdin (root only)

命令:mkpasswd

        这个命令经常用来生成密码,省的去想。默认 Linux 是没有这个命令的,需要安装一个包 “expect” ,如果 CentOS 可以上网,也可以使用命令完成安装。

1
yum install -y expect

        安装好后,输入命令:

1
2
[root@localhost ~]# mkpasswd
HXut8oy*8

        生成的随机字符串就可以作为一个密码,只不过这个密码不容易记忆。

锁定和解锁某个账户

锁定账户语法

1
passwd -l username

        让某个账户不能修改密码,可以用 -l 参数来锁定:

1
2
3
4
5
6
7
8
9
[root@localhost ~]# passwd -l beinan 注:锁定用户beinan不能更改密码;
Locking password for user beinan.
passwd: Success 注:锁定成功;
[beinan@localhost ~]# su beinan 注:通过su切换到beinan用户;
[beinan@localhost ~]$ passwd 注:beinan来更改密码;
Changing password for user beinan.
Changing password for beinan
(current) UNIX password: 注:输入beinan的当前密码;
passwd: Authentication token manipulation error 注:失败,不能更改密码;

解锁账户语法

1
passwd -u username

        注意:这两个用法只有 root 账户才有资格执行。

清除账户密码

语法

1
passwd -d username

        例:

1
2
3
4
5
6
7
[root@localhost ~]# passwd -d beinan 注:清除beinan用户密码;
Removing password for user beinan.
passwd: Success 注:清除成功;
[root@localhost ~]# passwd -S beinan 注:查询beinan用户密码状态;
Empty password. 注:空密码,也就是没有密码;
注意: 当我们清除一个用户的密码时,登录时就无需密码;这一点要加以注意

        注意:当清除一个账户的密码时,登录时就无需密码;这一点要嫁衣注意;

密码时效命令:chage

语法

1
chage [选项] [username]

        chage 命令的选项说明:
        -m days: 密码可更改的最小天数。为零时代表任何时候都可以更改密码。

        -M days: 指定口令有效的最多天数。当该选项指定的天数加上-d选项指定的天数小于当前的日期时,用户在使用该帐号前就必须改变口令。

        -d days: 指定从1970年1月1日起,口令被改变的天数。

        -I days: 指定口令过期后,帐号被锁前不活跃的天数。如果值为0,帐号在口令过期后就不会被锁。

        -E date: 指定帐号被锁的日期。日期格式YYYY-MM-DD。若不用日期,也可以使用自1970年1月1日后经过的天数。

        -W days: 指定口令过期前要警告用户的天数。

        -l: 列出指定用户当前的口令时效信息,以确定帐号何时过期。

        例如:要求用户 user1 两天内不能更改口令,并且口令最长的存活期为30天,并且口令过期前5天通知用户

1
chage -m 2 -M 30 -W 5 user1

        可以使用如下命令查看用户 user1 当前的口令时效信息:

1
chage -l user1

        提示:

  1. 可以使用 chage [用户名] 进入交互模式修改用户的口令时效。
  2. 修改口令实质上就是修改影子口令文件 /etc/shadow 中与口令时效相关的字段值。

chage 修改用户密码有限期限的命令

chage 语法格式

1
chage [-l] [-m 最小天数] [-M 最大天数] [-W 警告] [-i 失效日] [-E 过期日] [-d 最后日] username